Skip to content

[C#] GenHTTP 11: Update to latest#763

Merged
MDA2AV merged 4 commits into
MDA2AV:mainfrom
Kaliumhexacyanoferrat:genhttp-11-update
May 28, 2026
Merged

[C#] GenHTTP 11: Update to latest#763
MDA2AV merged 4 commits into
MDA2AV:mainfrom
Kaliumhexacyanoferrat:genhttp-11-update

Conversation

@Kaliumhexacyanoferrat
Copy link
Copy Markdown
Collaborator

Description


PR Commands — comment on this PR to trigger (requires collaborator approval):

Command Description
/benchmark -f <framework> Run all benchmark tests
/benchmark -f <framework> -t <test> Run a specific test
/benchmark -f <framework> --save Run and save results (updates leaderboard on merge)

Always specify -f <framework>. Results are automatically compared against the current leaderboard.


Run benchmarks locally

You can validate and benchmark your framework locally with the lite script — no CPU pinning, fixed connection counts, all load generators run in Docker.

./scripts/validate.sh <framework>
./scripts/benchmark-lite.sh <framework> baseline
./scripts/benchmark-lite.sh --load-threads 4 <framework>

Requirements: Docker Engine on Linux. Load generators (gcannon, h2load, h2load-h3, wrk, ghz) are built as self-contained Docker images on first run.

@Kaliumhexacyanoferrat Kaliumhexacyanoferrat self-assigned this May 28, 2026
@Kaliumhexacyanoferrat Kaliumhexacyanoferrat changed the title Â[C#] GenHTTP 11: Update to latest [C#] GenHTTP 11: Update to latest May 28, 2026
@Kaliumhexacyanoferrat
Copy link
Copy Markdown
Collaborator Author

/benchmark -f genhttp-11 --save

@github-actions
Copy link
Copy Markdown
Contributor

👋 /benchmark request received. A collaborator will review and approve the run.

@github-actions
Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: genhttp-11 | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 1,421,398 5756.3% 219MiB -2.6% +0.9%
baseline 4096 1,448,249 5812.8% 609MiB +0.1% +11.7%
pipelined 512 5,950,615 6175.1% 146MiB +100.4% -12.0%
pipelined 4096 5,696,249 6204.1% 240MiB +98.8% -45.0%
limited-conn 512 958,813 5668.9% 192MiB -2.4% -3.5%
limited-conn 4096 936,624 5801.8% 428MiB ~0% +19.9%
json 4096 656,896 6021.3% 598MiB -1.1% +21.5%
json-comp 512 183,261 4189.6% 247MiB -44.7% -44.9%
json-comp 4096 209,614 5516.9% 525MiB -34.6% -76.7%
json-comp 16384 209,581 5456.9% 922MiB -28.4% -77.5%
json-tls 4096 280,898 5627.0% 595MiB +4.7% +5.1%
upload 32 2,657 2583.7% 90MiB -0.2% -13.5%
upload 256 3,009 3891.7% 159MiB -0.2% +1.9%
api-4 256 36,748 392.7% 148MiB -7.1% +4.2%
api-16 1024 117,009 1531.4% 279MiB +0.8% -3.1%
static 1024 73,669 4996.6% 1.5GiB +85.7% +262.3%
static 4096 82,280 5798.3% 2.4GiB NEW NEW
static 6800 82,068 5740.6% 2.8GiB NEW NEW
async-db 1024 170,739 3430.5% 334MiB -1.5% ~0%
crud 4096 476,099 4253.4% 690MiB +4.8% +12.2%
echo-ws 512 2,095,237 6054.8% 194MiB +21.1% +16.2%
echo-ws 4096 1,988,888 5939.5% 740MiB +12.4% -3.6%
echo-ws 16384 1,845,092 5860.0% 1.7GiB +17.2% -5.6%
echo-ws-pipeline 512 3,711,075 6206.6% 265MiB NEW NEW
echo-ws-pipeline 4096 3,690,551 6073.9% 593MiB NEW NEW
echo-ws-pipeline 16384 3,125,762 5736.3% 366MiB NEW NEW
Full log
  Throughput: 3.63M req/s
  Bandwidth:  24.26MB/s
  WS upgrades: 512
  WS frames:   18168872
  Latency samples: 18168803 / 18168872 responses (100.0%)
  Latency overflow (>5s): 21
[info] CPU 6102.8% | Mem 294MiB

=== Best: 3711075 req/s (CPU: 6206.6%, Mem: 265MiB) ===
[info] saved results/echo-ws-pipeline/512/genhttp-11.json
httparena-bench-genhttp-11
httparena-bench-genhttp-11

==============================================
=== genhttp-11 / echo-ws-pipeline / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    916us    260us    357us   1.33ms   20.30ms

  17143412 frames sent in 5.00s, 17132147 frames received
  Throughput: 3.42M req/s
  Bandwidth:  22.89MB/s
  WS upgrades: 959
  WS frames:   17132147
  Latency samples: 17132129 / 17132147 responses (100.0%)
[info] CPU 5992.8% | Mem 328MiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    857us    261us    316us   1.97ms   21.20ms

  17572421 frames sent in 5.00s, 17545562 frames received
  Throughput: 3.51M req/s
  Bandwidth:  23.48MB/s
  WS upgrades: 2139
  WS frames:   17545562
  Latency samples: 17545488 / 17545562 responses (100.0%)
[info] CPU 6181.6% | Mem 456MiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   1.41ms    257us    312us   3.25ms   15.90ms

  18487344 frames sent in 5.00s, 18452755 frames received
  Throughput: 3.69M req/s
  Bandwidth:  24.71MB/s
  WS upgrades: 2742
  WS frames:   18452755
  Latency samples: 18452694 / 18452755 responses (100.0%)
[info] CPU 6073.9% | Mem 593MiB

=== Best: 3690551 req/s (CPU: 6073.9%, Mem: 593MiB) ===
[info] saved results/echo-ws-pipeline/4096/genhttp-11.json
httparena-bench-genhttp-11
httparena-bench-genhttp-11

==============================================
=== genhttp-11 / echo-ws-pipeline / 16384c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   1.17ms    276us    408us   7.82ms   193.60ms

  15651134 frames sent in 5.00s, 15628812 frames received
  Throughput: 3.12M req/s
  Bandwidth:  20.91MB/s
  WS upgrades: 1397
  WS frames:   15628812
  Latency samples: 15628812 / 15628812 responses (100.0%)
[info] CPU 5736.3% | Mem 366MiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency      0us      0us      0us      0us      0us

  0 frames sent in 5.00s, 0 frames received
  Throughput: 0 req/s
  Bandwidth:  0B/s
  WS upgrades: 0
  WS frames:   0
  Latency samples: 0 / 0 responses (0.0%)
[info] CPU 6427.8% | Mem 426MiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency      0us      0us      0us      0us      0us

  0 frames sent in 5.00s, 0 frames received
  Throughput: 0 req/s
  Bandwidth:  0B/s
  WS upgrades: 0
  WS frames:   0
  Latency samples: 0 / 0 responses (0.0%)
[info] CPU 6432.7% | Mem 422MiB

=== Best: 3125762 req/s (CPU: 5736.3%, Mem: 366MiB) ===
[info] saved results/echo-ws-pipeline/16384/genhttp-11.json
httparena-bench-genhttp-11
httparena-bench-genhttp-11
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-16-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-4-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/async-db-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/crud-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-tls-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-6800.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-32.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536
[info] restoring CPU governor → powersave

@Kaliumhexacyanoferrat
Copy link
Copy Markdown
Collaborator Author

/benchmark -f genhttp-11 --save

@github-actions
Copy link
Copy Markdown
Contributor

👋 /benchmark request received. A collaborator will review and approve the run.

@github-actions
Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: genhttp-11 | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 1,486,774 5787.6% 218MiB +1.8% +0.5%
baseline 4096 1,428,408 5652.8% 448MiB -1.2% -17.8%
pipelined 512 8,071,429 6395.8% 139MiB +171.8% -16.3%
pipelined 4096 8,143,235 6215.7% 394MiB +184.3% -9.6%
limited-conn 512 975,918 5730.9% 189MiB -0.6% -5.0%
limited-conn 4096 942,613 5683.3% 370MiB +0.6% +3.6%
json 4096 677,912 5971.9% 570MiB +2.0% +15.9%
json-comp 512 186,010 4144.9% 238MiB -43.9% -46.9%
json-comp 4096 210,023 5395.0% 587MiB -34.5% -73.9%
json-comp 16384 214,294 5546.2% 887MiB -26.8% -78.3%
json-tls 4096 523,539 5981.8% 965MiB +95.1% +70.5%
upload 32 2,683 2639.9% 95MiB +0.8% -8.7%
upload 256 3,028 3832.5% 159MiB +0.4% +1.9%
api-4 256 45,959 389.6% 147MiB +16.1% +3.5%
api-16 1024 122,771 1527.0% 282MiB +5.8% -2.1%
static 1024 86,442 5489.9% 2.2GiB +117.9% +431.3%
static 4096 97,472 5769.5% 2.1GiB NEW NEW
static 6800 95,598 5718.9% 3.3GiB NEW NEW
async-db 1024 171,582 3387.4% 330MiB -1.0% -1.2%
crud 4096 454,082 4049.0% 626MiB ~0% +1.8%
echo-ws 512 2,072,434 6102.4% 196MiB +19.8% +17.4%
echo-ws 4096 2,033,859 5868.1% 704MiB +14.9% -8.3%
echo-ws 16384 1,875,182 5749.5% 1.5GiB +19.1% -16.7%
echo-ws-pipeline 512 3,967,059 6079.4% 230MiB NEW NEW
echo-ws-pipeline 4096 3,690,572 6285.5% 530MiB NEW NEW
echo-ws-pipeline 16384 3,687,198 6062.3% 974MiB NEW NEW
Full log
  19148649 frames sent in 5.00s, 19148495 frames received
  Throughput: 3.83M req/s
  Bandwidth:  25.56MB/s
  WS upgrades: 243
  WS frames:   19148495
  Latency samples: 19148433 / 19148495 responses (100.0%)
[info] CPU 6046.8% | Mem 228MiB

=== Best: 3967059 req/s (CPU: 6079.4%, Mem: 230MiB) ===
[info] saved results/echo-ws-pipeline/512/genhttp-11.json
httparena-bench-genhttp-11
httparena-bench-genhttp-11

==============================================
=== genhttp-11 / echo-ws-pipeline / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency    928us    267us    415us   4.13ms   54.90ms

  16518736 frames sent in 5.00s, 16468636 frames received
  Throughput: 3.29M req/s
  Bandwidth:  22.09MB/s
  WS upgrades: 3283
  WS frames:   16468636
  Latency samples: 16468636 / 16468636 responses (100.0%)
[info] CPU 5865.8% | Mem 549MiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   1.36ms    260us    317us   3.25ms   30.80ms

  18464432 frames sent in 5.00s, 18452864 frames received
  Throughput: 3.69M req/s
  Bandwidth:  24.65MB/s
  WS upgrades: 1443
  WS frames:   18452864
  Latency samples: 18452814 / 18452864 responses (100.0%)
[info] CPU 6285.5% | Mem 530MiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   2.10ms    260us    318us   3.27ms   205.00ms

  18442346 frames sent in 5.00s, 18394668 frames received
  Throughput: 3.68M req/s
  Bandwidth:  24.66MB/s
  WS upgrades: 3455
  WS frames:   18394668
  Latency samples: 18394637 / 18394668 responses (100.0%)
[info] CPU 6076.4% | Mem 669MiB

=== Best: 3690572 req/s (CPU: 6285.5%, Mem: 530MiB) ===
[info] saved results/echo-ws-pipeline/4096/genhttp-11.json
httparena-bench-genhttp-11
httparena-bench-genhttp-11

==============================================
=== genhttp-11 / echo-ws-pipeline / 16384c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   2.20ms    260us    358us   3.21ms   414.60ms

  17461630 frames sent in 5.00s, 17364758 frames received
  Throughput: 3.47M req/s
  Bandwidth:  23.40MB/s
  WS upgrades: 6113
  WS frames:   17364758
  Latency samples: 17364758 / 17364758 responses (100.0%)
[info] CPU 5791.8% | Mem 654MiB

[run 2/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   3.20ms    256us    311us   3.28ms    1.02s

  18568822 frames sent in 5.00s, 18435991 frames received
  Throughput: 3.69M req/s
  Bandwidth:  24.91MB/s
  WS upgrades: 8303
  WS frames:   18435991
  Latency samples: 18435991 / 18435991 responses (100.0%)
[info] CPU 6062.3% | Mem 974MiB

[run 3/3]
gcannon v0.5.3 [WS]
  Target:    localhost:8080/ws
  Threads:   64
  Conns:     16384 (256/thread)
  Pipeline:  16
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   2.69ms    258us    310us    985us   492.90ms

  18437038 frames sent in 5.00s, 18334649 frames received
  Throughput: 3.67M req/s
  Bandwidth:  24.71MB/s
  WS upgrades: 6400
  WS frames:   18334649
  Latency samples: 18334649 / 18334649 responses (100.0%)
[info] CPU 5931.6% | Mem 1.3GiB

=== Best: 3687198 req/s (CPU: 6062.3%, Mem: 974MiB) ===
[info] saved results/echo-ws-pipeline/16384/genhttp-11.json
httparena-bench-genhttp-11
httparena-bench-genhttp-11
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-16-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-4-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/async-db-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/crud-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/echo-ws-pipeline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-tls-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-6800.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-32.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
httparena-redis
[info] restoring loopback MTU to 65536
[info] restoring CPU governor → powersave

@Kaliumhexacyanoferrat Kaliumhexacyanoferrat marked this pull request as ready for review May 28, 2026 14:29
@MDA2AV MDA2AV merged commit 13edfa7 into MDA2AV:main May 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants